package visualization
{
	import flash.display.Graphics;
	
	import model.Field;
	import model.Model;
	
	import mx.controls.Label;
	import mx.core.IUIComponent;
	import mx.effects.Move;
	import mx.effects.Resize;
	import mx.events.PropertyChangeEvent;
	
	public interface IDataPoint extends IUIComponent
	{	
		// The object where the data comes from
		function get source():Object;
		function set source( obj:Object ):void;
		
		// The fields the data point contains
		function get fields():Array;
		function set fields(arr:Array):void;
		
		// An object containing the data for the IDataPoint
		function getData( field:Field ):Object;
		
		// The title of the given data point
		function get title():String;
		function set title( name:String ):void;
		
		// The model used to generate the IDataPoint
		function get model():Model;
		function set model( mod:Model ):void;
		
		// Returns a label inside the element
		function getLabel():Label;
		function resetLabels():void;
		
		// Accepts Property Change Events to trigger changes to the visualization
		function handlePropertyChange( event:PropertyChangeEvent = null ):void;
		
		// More UIComponent properties
		function get graphics():Graphics;
		function set toolTip( value:String ):void;
		function get toolTip():String;
		
		// Tween Effects
		function get moveTween():Move;
		function get resizeTween():Resize;
	}
}